package com.qdlc.p2p.biz.executer;

import com.qdlc.p2p.dal.dto.Operator;
import com.qdlc.p2p.dal.dto.User;

/**
 * 执行器接口
 *
 * @author Kaiju Zhao
 * @date 2016-03-16
 * @version 1.1.0.0
 */
public interface Executer{

	/**
	 * 执行
	 *
	 * @author Kaiju Zhao
	 * @param money 交易金额
	 * @param user 交易方
	 */
	void execute(double money, User user);

	/**
	 * 执行
	 *
	 * @author Kaiju Zhao
	 * @param money 交易金额
	 * @param user 交易方
	 * @param toUser 交易对方
	 */
	void execute(double money, User user, User toUser);

	/**
	 * 执行对账处理
	 *
	 * @author Kaiju Zhao
	 * @param total 总额
	 * @param useMoney 可用金额
	 * @param noUseMoney 冻结总额
	 * @param user 交易方
	 * @param toUser 交易对方
	 */
	void execute(double total, double useMoney, double noUseMoney, User user, User toUser);

	/**
	 * 执行
	 *
	 * @author Kaiju Zhao
	 * @param money 资金
	 * @param user 交易方
	 * @param operator 操作员
	 */
	void execute(double money, User user, Operator operator);

	/**
	 * 执行
	 *
	 * @author Kaiju Zhao
	 * @param money 资金
	 * @param user 交易方
	 * @param operator 操作员
	 * @param toUser 交易对方
	 */
	void execute(double money, User user, Operator operator, User toUser);

}
